package com.briup.smartlab.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.briup.smartlab.bean.User;
import com.briup.smartlab.dao.UserMapper;
import com.briup.smartlab.exception.ServiceException;
import com.briup.smartlab.service.IAuthService;
import com.briup.smartlab.util.JWTUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

@Service //创建service层对象
public class AuthServiceImpl implements IAuthService {
    @Autowired
    private UserMapper mapper;

    @Override
    public String login(String username, String password) {
        //1.校验参数

        /*
           1.登录成功提示用户，进入系统首页
           2.登录失败：
               用户名不存在
               密码错误
               状态被锁定,不能登录
         */

        //1.根据用户名查询数据库中对应的用户信息
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getUsername,username);
        User user = mapper.selectOne(wrapper);
        if(user == null){
            throw new ServiceException("用户名不存在");
        }
        //2.如果与数据库存储的密码不同
        if (!user.getPassword().equals(password)){
            throw new ServiceException("密码错误");
        }
        //3.状态锁定: 进行补充，提示用户账号已禁用

        //将用户登录信息生成对应jwt字符串进行返回

        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("realName",user.getRealname());
        userInfo.put("tel",user.getMobile());
        //...
        return JWTUtil.sign(username, userInfo);
    }

    @Override
    public User findByToken(String token) {
        System.out.println(token);
        //补全代码： 解析token获取userid，查询数据库返回用户信息
        return null;
    }
}
